/**
 * 封装的 axios 请求模块
 */
import axios from 'axios'
import router from '@/router'
import { getToken } from '@/utils/auth'

// axios 可以配置基础路径
const http = axios.create({
  baseURL: 'http://localhost:8888/api/private/v1/'
})

/**
 * axios 请求拦截器
 * 所有使用 axios 发送的请求，都会经过这里
 * 可以在这里定制业务逻辑，例如统一给需要授权的 api + token
 */
http.interceptors.request.use(function (config) {
  console.log('3. 请求经过请求拦截器，这里统一加 token')
  console.log('请求经过这里', config) // 查看
  if (config.url !== '/login') {
    // config.headers.Authorization = window.localStorage.getItem('token') // 授权
    config.headers.Authorization = getToken()
  }
  return config // 请求通过的规则,如果不 return config 则请求不会发出去
}, function (error) {
  return Promise.reject(error)
})

/**
* axios 响应拦截器
*/
http.interceptors.response.use(function (response) {
  console.log('4. 响应回来先经过响应拦截器，这里判断响应码是否 401')
  console.log('响应回来了', response)
  if (response.data.meta.status === 401) {
    // 跳转到登录页
    // 组件的 this.$touter 就是 router/index.js 中 new VueRouter 实例
    router.replace('/login')
  }
  return response // 会作为你真正的响应结果
}, function (error) {
  return Promise.reject(error)
})
export default http
